iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 21
1
AI & Data

Machine Learning系列 第 21

Day21 - Feature Engineering -- 7. Date and Time Engineering(3)時間序列

  • 分享至 

  • xImage
  •  

7. Date and Time Engineering(2)和時間序列

7.1 Date-Related and Time-Related Features(時間日期相關特徵)
7.2 Feature Engineering for Time Series(時間序列)

7.2 Feature Engineering for Time Series(時間序列)

墨爾本每日最低溫資料為例:

data = pd.read_csv('../input/others/daily-min-temperatures.csv', header=0, parse_dates=True, squeeze=True)
# 轉換成日期格式
data['Date'] = pd.to_datetime(data['Date'],format='%Y-%m-%d')

提取前過去資料統計數值特徵:
我們可以使用Pandas的視窗計算(window calculations)功能。Pandas提供兩種視窗計算功能:滾動視窗(rolling window)和擴張視窗(expanding window)兩種計算功能。

視窗是指進行視窗運算的資料列的子集合,當我們定義一個視窗後,就可以對視窗內資料進行各種統計運算。

滾動視窗rolling window計算
Uber網站下載的圖 清楚的傳達這個觀念。

Sliding window
https://ithelp.ithome.com.tw/upload/images/20200921/20129584RZflsPVpZW.png

如下圖,我們定義視窗大小是2,並計算視窗內資料的平均值後,視窗往下移動一列,然後再計算視窗內資料的平均值。
https://ithelp.ithome.com.tw/upload/images/20200921/20129584zNUAQuZ0Qh.png

使用Pandas的rolling()函數計算移動平均

# 視窗大小是7
data['rolling_mean'] = data['Temp'].rolling(window=7).mean()
data = data[['Date', 'Temp', 'rolling_mean']]
data.head(10)

/|Date| Temp| rolling_mean
------------- | -------------
0| 1981-01-01| 20.7| NaN
1| 1981-01-02| 17.9| NaN
2| 1981-01-03| 18.8| NaN
3| 1981-01-04| 14.6| NaN
4| 1981-01-05| 15.8| NaN
5| 1981-01-06| 15.8| NaN
6| 1981-01-07| 15.8| 17.057143
7| 1981-01-08| 17.4| 16.585714
8| 1981-01-09| 21.8| 17.142857
9| 1981-01-10| 20.0| 17.314286
每一列的移動平均"rolling_mean"等於它的當天溫度"Temp"加上前6列的"Temp",再除以7(視窗大小);也就是它的移動平均(Moving Avg) = ([t] + [t-1] +...+ [t-6]) / 7。

擴張視窗expanding window計算
在滾動視窗下,視窗的大小是固定的,視窗隨時間向前移動,所以我們只有考慮到最近的資料,而忽略了過去的資料,而擴張視窗會把過去所有的資料都考慮進來,累加進來。

Expanding window
https://ithelp.ithome.com.tw/upload/images/20200921/20129584jsLyRjMEUv.png
圖片來源:Uber.com

當我建立視窗並進行視窗內資料運算後,視窗往前加入下一列資料,也就是視窗向前擴大一列後,再進行視窗內的資料運算。

使用Pandas的expanding()函數計算平均值

data['expanding_mean'] = data['Temp'].expanding(7).mean()
data = data[['Date', 'Temp', 'expanding_mean']]
data.head(10)

/|Date| Temp |expanding_mean
------------- | -------------
0| 1981-01-01| 20.7| NaN
1| 1981-01-02| 17.9| NaN
2| 1981-01-03| 18.8| NaN
3| 1981-01-04| 14.6| NaN
4| 1981-01-05| 15.8| NaN
5| 1981-01-06| 15.8| NaN
6| 1981-01-07| 15.8| 17.057143
7| 1981-01-08| 17.4| 17.100000
8| 1981-01-09| 21.8| 17.622222
9| 1981-01-10| 20.0| 17.860000


上一篇
Day20 - Feature Engineering(特徵工程) -- 7. Date and Time Engineering (2)和時間序列
下一篇
Day22 - Feature Engineering -- 8. Cyclical Features
系列文
Machine Learning32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言